Kerry Back
BUSI 721, Fall 2022
JGSB, Rice University
Portfolio mean is the weighted average of asset means.
Portfolio std dev is less than the weighted average of asset std devs.
This session: How do we estimate asset means and variances?
Asset Means
Asset standard deviations
Suppose returns \(r_{1},\cdots,r_{n}\) are independent draws from a normal \((\mu,\sigma^2)\) distribution.
Let \(\bar{r}\)= sample mean and
s= sample std dev = \(\sqrt{\sum_{i=1}^n \frac{(r_{i}-\bar{r})^2}{n-1}}\)
Then, \(\bar{r}\) is normal \((\mu,\sigma^2/n)\) and
\[\frac{(n-1)s^2}{\sigma^2}\]
is \(\chi^2(n-1)\).
Consider a sample with \(n=25\), \(\bar{r}=0.12\), \(s=0.30\).
The estimated std dev (std error) of \(\bar{r}\) is \(0.30/\sqrt{25}=0.06\).
A \(95\%\) confidence interval for \(\mu\) is
\[0.12 ± 1.96 \times 0.06 = [0.013,0.227]\]
A similarly wide confidence interval for \(\sigma\) is implied by the \(\chi^2\) distribution.
If we sample monthly, weekly, \(\ldots\) then we have more data points, so estimates are more accurate .
When we scale to annual parameters,
We’ll demonstrate this via simulation.
Simulate monthly returns for 25 years. Compound to get annual returns.
Compute monthly mean and variance and annual mean and variance.
Repeat 1,000 times and compute distributions.
from scipy.stats import norm
import numpy as np
# monthly parameters
mu, sigma = 0.01, .3/np.sqrt(12)
# monthly returns: 25 years, 1,000 times
mrets = norm.rvs(loc=mu, scale=sigma, size=12*25*1000)
mrets = mrets.reshape(12, 25, 1000)
mmeans = np.mean(mrets, axis=(0,1))
msds = np.std(mrets, axis=(0,1))
# compound to annual returns
arets = np.prod(1+mrets, axis=0) - 1
ameans = np.mean(arets, axis=0)
asds = np.std(arets, axis=0)
Means from 1,000 samples.
Using monthly data doesn’t help.
Estimation of the std dev is much more accurate with monthly data.